package ar.com.jendrix.login.dao;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.Query;

import ar.com.jendrix.common.exception.SystemException;
import ar.com.jendrix.common.util.Comparator;
import ar.com.jendrix.login.entity.Cuenta;
import ar.com.jendrix.login.query.CuentaQuery;

@Stateless
public class CuentaDAOImpl extends LoginEntityDAO<Cuenta> {

	@Override
	public Class<Cuenta> getEntityClass() {
		return Cuenta.class;
	}

	@SuppressWarnings("unchecked")
	public final List<Cuenta> search(CuentaQuery cuentaQuery) throws SystemException {
		List<Cuenta> entityList = null;
		try {

			StringBuilder hql = new StringBuilder();
			hql.append("select u ");
			hql.append("from " + getEntityClass().getSimpleName() + " u ");
			hql.append("where 1 = 1 ");

			if (!Comparator.isEmpty(cuentaQuery.getNombre())) {
				hql.append("and upper(u.nombre) like '%" + cuentaQuery.getNombre().toUpperCase() + "%' ");
			}

			hql.append("order by u.id asc");

			Query query = getEntityManager().createQuery(hql.toString());

			entityList = query.getResultList();

		} catch (Throwable t) {
			throw new SystemException(t);
		}
		return entityList;
	}

}